#pragma once
#include<iostream>
#include<pthread.h>

namespace MYTOOL
{
    class Mutex
    {
    public:
        Mutex(pthread_mutex_t *lock_p)
            : lock_p_(lock_p)
        {
        }
        void lock()
        {
            if(lock_p_) pthread_mutex_lock(lock_p_);
        }
        void unlock()
        {
            if(lock_p_) pthread_mutex_unlock(lock_p_);
        }
        ~Mutex()
        {}
    private:
        pthread_mutex_t *lock_p_;
    };

    class LockGuard
    {
    public:
        LockGuard(pthread_mutex_t *mutex)
            : mutex_(mutex)
        {
            mutex_.lock();
        }

        ~LockGuard()
        {
            mutex_.unlock();
        }
    private:
        Mutex mutex_;
    }
}